This means that as the artist, you are doing gamma correction in the POV-Ray scene file for your particular hardware. This scene file will generate an image file that is also gamma corrected for your hardware, and will display correctly on systems similar to your own. However, when this scene is rendered on another platform, it may be too bright or too dim, regardless of the output file format used. Rather than have you change all the scene files to have a single fixed gamma value (heaven forbid!), POV-Ray 3.0 allows you to specify in the scene file the Display_Gamma of the system that the scene was created on.
The assumed_gamma global setting, in conjunction with the Display_Gamma INI setting lets POV-Ray know how to do gamma correction on a given scene so that the preview and output image files will appear the correct brightness on any system. Since the gamma correction is done internally to POV-Ray, it will produce output image files that are the correct brightness for the current display, regardless of what output format is used. As well, since the gamma correction is performed in the high-precision data format the POV-Ray uses internally, it produces better results than gamma correction done after the file is written to disk.
Although you may not notice any difference in the output on your system with and without an assumed_gamma setting, the {HIW/}assumed_gamma is important if the scene is ever rendered on another platform.
The boolean values turns the option on or off. If the keyword is specified without the boolean value then the option is turned on. If hf_gray_16 is not specified in any global_settings statement in the entire scene then the default is off.
When hf_gray_16 is on, the output file will be in the form of a heightfield, with the height at any point being dependent on the brightness of the pixel. The brightness of a pixel is calculated in the same way that color images are converted to grayscale images, as follows:
height = 0.3 * red + 0.59 * green + 0.11 * blue
Setting the hf_gray_16 option will cause the preview display, if used, to be in a grayscale rather than color. This is to allow you to see how the heightfield will look, because some file formats store heightfields in a way that is difficult to understand afterwards. See section "Height Field" for a description of how POV-Ray heightfields are stored for each file type.
The default value is rgb<0.25,0.18,0.14> and any filter or transmit values are ignored. These values are proportional to the wavelength of light but they represent no real world units.
In general, the default values should prove adequate, but we provide this option as a means to experiment with other values.
This is used when a ray is reflected or is passing through a transparent object and when shadow rays are cast. When a ray hits a reflective surface, it spawns another ray to see what that point reflects, that's trace level 1. If it hits another reflective surface, then another ray is spawned and it goes to trace level 2. The maximum level by default is 5.
One speed enhancement added to POV-Ray in version 3.0 was Adaptive Depth Control , or ADC. Each time a new ray is spawned as a result of reflection or refraction, its contribution to the overall color of the pixel is reduced by the amount of reflection or the filter value of the refractive surface. At some point, this contribution can be considered to be insignificant, and there is no point in tracing any more rays. Adaptive depth control is what tracks this contribution and makes the decision of when to bail out. On scenes that use a lot of partially reflective or refractive surfaces, this can result in a considerable reduction in the number of rays fired and makes it "safer" to use much higher max_trace_level values.
This reduction in color contribution is a result of scaling by the reflection amount and/or the filter values of each surface, so a perfect mirror or perfectly clear surface will not be optimizable by ADC. You can see the results of ADC by watching the "Rays Saved" and "Highest Trace Level" displays on the statistics screen.
The point at which a ray's contribution is considered insignificant is controlled by the adc_bailout value. The default adc_bailout is 1/255, or approximately 0.0039, since a change smaller than that could not be visible in a 24 bit image. Generally this setting is perfectly adequate, and should be left alone. Setting adc_bailout to 0 will disable ADC, relying completely on max_trace_level to set an upper limit on the number of rays spawned.
If the "I-Stack Overflows" remain, increase this value until they stop.
Changing this value affects both waves and ripples alike on all patterns in the scene.
Radiosity is more accurate than simplistic ambient light but it takes much longer to compute. For this reason, POV-Ray does not use radiosity by default. Radiosity is turned on using Quality=10 or Quality=11 options in an INI file or +q10 or +q11 command line switch. The default quality is 9 and uses no radiosity. A value of 10 uses radiosity but does not compute halos. Quality 11 uses radiosity and halos. See "Quality Settings" for details.
The following sections describes how radiosity works, how to control it with various global settings and tips on trading quality vs. speed.
- | Diffuse, the effect that makes the side of things facing the light brighter; |
- | Specular, the effect that makes shiny things have dings or sparkles on them; |
- | Reflection, the effect that mirrors give; and |
- | Ambient, the general all-over light level that any scene has, which keeps things in shadow from being pure black. |
POV's radiosity system, based on a method by Greg Ward, provides a way to replace the last term - the constant ambient light value - with a light level which is based on what surfaces are nearby, and how bright in turn they are.
The first thing you might notice about this definition is that it is circular: the light of everything is dependent on everything else, and vice versa. This is true in real life, but in the world of ray tracing, we can make an approximation. The approximation that is used is: the objects you are looking at have their 'ambient' values calculated for you, by checking the other objects nearby. When those objects are checked during this process, however, a traditional constant ambient term is used.
How does POV calculate the ambient term for each point? By sending out more rays, in many different directions, and averaging the results. A typical point might use 200 or more rays to calculate its ambient light level correctly.
Now, this sounds like it would make the ray tracer 200 times slower. This is true, except that the software takes advantage of the fact that ambient light levels change quite slowly. (Remember, shadows are calculated separately, so sharp shadow edges are not a problem). Therefore, these extra rays are sent out only "once in a while" (about 1 time in 50), then these calculated values are saved and reused for nearby pixels in the image when possible.
This process of saving and reusing values is what causes the need for a variety of tuning parameters, so you can get the scene to look just the way you want.
Each item is optional and may appear in and order. If an item is specified more than once, the last setting overrides previous values. Details on each item is given in the following sections.
The default value is 3.3.
When this value is too low, the light level will tend to look a little bit blotchy, as if the surfaces you're looking at were slightly warped. If this is not important to your scene (as in the case that you have a bump map, or if you have a strong texture), then by all means use a lower number.
The default value is 100.
So, imagine an apple at the left edge of a table. The goal is to make sure that samples on the surface of the table at the right are not used too close to the apple, and definitely not underneath the apple. If you had enough rays, there wouldn't be a problem, since one of them would be guaranteed to hit the apple and set the reuse radius properly for you. In practice, you must limit this.
I use this technique: which object in your scene might have this problem: (a small object on a larger flatter surface, that you want good ambient light near). Now, how far from this would you have to get to be sure that one of your rays had a good chance of hitting it? In the apple-on-the-table example, assuming I used one POV-Ray unit as one inch, I might use 30 inches. A theoretically sound way (when you are running lots of rays) is the distance at which this object's top is 5 degrees above the horizon of the sample point you are considering. This corresponds to about 11 times the height of the object. So, for a 3-inch apple, 33 inches makes some sense. For good behavior under and around a 1/3 inch pea, use 3 inches etc. Another VERY rough estimate is one third the distance from your eye position to the point you are looking at. The reasoning is that you are probably no more than 90 inches from the apple on the table, if you care about the shading underneath it.
The default value is 0.